package org.aerie.forest.core.brick.log;

import org.aerie.forest.core.brick.exception.custom.runtime.ForestBanNew;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;

/**
 * @description 全局日志配置器[接口不是常量的最好归宿，但是这里为了枚举的多态性]
 *
 * @author quark
 * @organization aerie
 * @date 2020年5月6日 下午4:37:32
 * @version 1.2.0
 */
public interface GlobalLogger {

	/*
	 * 开启jvm的彩色打印{-Dlog4j.skipJansi=false}
	 */
	/**
	 * @description 全局异常信息日志记录器【枚举类无法通过lombok注解注入Logger】
	 * 
	 * @author quark
	 * @date 2020年2月17日 下午1:36:48
	 * @version 1.2.0
	 */
	Logger LOGGER = LoggerFactory.getLogger("ForestAsyncLogger");

	/**
	 * @description FATAL日志标记：==//=\\== 字体颜色：30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿
	 *              37:白色 背景颜色：40:黑 41:深红42:绿43:黄色44:蓝色 45:紫色 46:深绿
	 *              47:白色【鉴于slf4j没有fata级别】
	 * 
	 * @author quark
	 * @date 2020年2月17日 下午1:36:59
	 * @version 1.2.0
	 */
	Marker MARKER_FATAL = MarkerFactory.getIMarkerFactory().getMarker("* # * # *      FATAL      * # * # *");

	/**
	 * @description log的全局信息常量池
	 *
	 * @author quark
	 * @organization aerie
	 * @date 2020年5月8日 下午5:25:32
	 * @version 1.2.0
	 */
	static class LogMsgPool {

		/**
		 * @description 字符串常量
		 * 
		 * @author quark
		 * @date 2020年5月6日 下午1:58:48
		 * @version 1.2.0
		 */
		public static final String INIT_COMPLETE = "{}初始创建完成";

		/**
		 * Construction
		 * 
		 *
		 * @author quark
		 * @date 2020年5月9日 上午9:22:16
		 * @version 1.2.0
		 */
		private LogMsgPool() {
			// 禁止创建对象
			throw new ForestBanNew(this.getClass());
		}
	}

}